package com.huiying.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.huiying.entity.entity.Conversation;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 会话服务接口
 * 继承 MyBatis-Plus 的 IService 接口，提供通用 CRUD 操作
 */
public interface ConversationService extends IService<Conversation> {

    /**
     * 根据两个用户ID查找或创建会话。
     * 约定：user1Id 总是两个用户ID中较小的，user2Id 总是较大的。
     *
     * @param user1Id 会话参与者1的ID (较小ID)
     * @param user2Id 会话参与者2的ID (较大ID)
     * @return 找到或创建的会话对象
     */
    Conversation findOrCreateConversation(Long user1Id, Long user2Id);

    /**
     * 更新指定会话的最后消息时间。
     *
     * @param conversationId 会话ID
     * @param lastMessageTime 最后一条消息的时间
     */
    void updateLastMessageAt(Long conversationId, LocalDateTime lastMessageTime);

    /**
     * 获取指定用户参与的所有会话列表，按最后消息时间倒序排列。
     *
     * @param userId 用户ID
     * @return 会话列表
     */
    List<Conversation> getConversationsByUserId(Long userId);

    /**
     * 检查指定用户是否是某个会话的参与者。
     *
     * @param userId 用户ID
     * @param conversationId 会话ID
     * @return 如果用户是会话参与者则返回 true，否则返回 false
     */
    boolean isUserInConversation(Long userId, Long conversationId);
}